/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ares.service.sapimpl;

import com.ares.service.bean.BeanCalificaciones;
import com.ares.service.bean.BeanIntegral;
import com.ares.service.dao.EvaluacionIntegral_I;
import com.ares.service.sap.ConexionSAP;

/**
 *
 * @author electro
 */
public class SapEvaluacionIntegral implements EvaluacionIntegral_I{
    //TRAE LOS COMENTARIOS DEL EVALUADO Y DEL EVALUADOR
    public BeanIntegral getComentariosIntegral(String idEmpleado, String periodo, String version) throws Exception{
        BeanIntegral beanIntegral = new BeanIntegral();
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();
        StringBuilder auxiliarColab = new StringBuilder();
        StringBuilder auxiliarJefe = new StringBuilder();
        StringBuilder auxiliarRevisor = new StringBuilder();

        int aux1 = 0, aux2 = 0, aux3 = 0;

        try{
            conSAP.RegistrarRFC("ZHR_RFC_LEER_EVINT_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.EjecutarRFC();

            com.sap.mw.jco.JCO.Table INTEGRAL = null;
            INTEGRAL = conSAP.rFC.getTableParameterList().getTable("OUT_LIST");

            for (int i = 0; i < INTEGRAL.getNumRows(); i++) {
                INTEGRAL.setRow(i);
                if(INTEGRAL.getString("TIPO").equals("T")){
                    aux1++;
                    auxiliarJefe.append(INTEGRAL.getString("TLINE").trim());
                    if(aux1 != 0) auxiliarJefe.append(" ");
                }
                else{
                    if(INTEGRAL.getString("TIPO").equals("E")){
                        aux2++;
                        auxiliarColab.append(INTEGRAL.getString("TLINE").trim());
                        if(aux2 != 0) auxiliarColab.append(" ");
                    }
                    else{
                        aux3++;
                        auxiliarRevisor.append(INTEGRAL.getString("TLINE").trim());
                        if(aux3 != 0) auxiliarRevisor.append(" ");
                    }
                }
            }
            beanIntegral.setComentarioEvaluado(auxiliarColab.toString().trim());
            beanIntegral.setComentarioEvaluador(auxiliarJefe.toString().trim());
            beanIntegral.setComentarioRevisor(auxiliarRevisor.toString().trim());
        }catch(Exception e){
            e.getMessage();
        }
        return beanIntegral;
    }

    public String getEstadoIntegral(String idEmpleado, String periodo, String version) throws Exception{
        String estado = "";
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();

        try{
            conSAP.RegistrarRFC("ZHR_RFC_LEER_EVINT_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.EjecutarRFC();
            estado = conSAP.rFC.getExportParameterList().getString("ESTADO");
        }catch(Exception e){
            e.getMessage();
        }

        return estado;
    }

    public String insertarIntegral(String idEmpleado, String periodo, String version, String estado, String tipo, BeanIntegral beanIntegral) throws Exception {
        String mensaje = "SE HA GUARDADO LOS CAMBIOS";
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();

        try{
            conSAP.RegistrarRFC("ZHR_RFC_GRABAR_EVINT_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.IngresarDatosInput(estado, "ESTADO");
            conSAP.CreaTabla("T_DEVAINT_ED");
            if(tipo.equals("E")){
                for (int i = 0; i < beanIntegral.getLstComentarioColab().size(); i++) {
                    conSAP.IngresarDatoTabla(tipo, "TIPO", i);
                    conSAP.IngresarDatoTabla(beanIntegral.getLstComentarioColab().get(i), "TLINE", i);
                }
            }
            else{
                if(tipo.equals("T")){
                    for (int i = 0; i < beanIntegral.getLstComentarioJefe().size(); i++) {
                        conSAP.IngresarDatoTabla(tipo, "TIPO", i);
                        conSAP.IngresarDatoTabla(beanIntegral.getLstComentarioJefe().get(i), "TLINE", i);
                    }
                }
                else{
                    for (int i = 0; i < beanIntegral.getLstComentarioRevisor().size(); i++) {
                        conSAP.IngresarDatoTabla(tipo, "TIPO", i);
                        conSAP.IngresarDatoTabla(beanIntegral.getLstComentarioRevisor().get(i), "TLINE", i);
                    }
                }
            }
            conSAP.EjecutarRFC();

        }catch(Exception e){
            e.getMessage();
        }
        return mensaje;
    }


    public String enviarEvaluacionIntegral(String idEmpleado, String periodo, String version, String estado) throws Exception{
        String mensaje = "SE ENVIARON LOS DATOS CORRECTAMENTE";
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();
        try{
            conSAP.RegistrarRFC("ZHR_RFC_ACTESTEVALINT_ED");
            conSAP.IngresarDatosInput(idEmpleado, "I_ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "I_PERIODO");
            conSAP.IngresarDatosInput(version, "I_ID_VERSION");
            conSAP.IngresarDatosInput(estado, "I_ESTADO");
            conSAP.EjecutarRFC();
        }
        catch(Exception e){
            e.getMessage();
        }
        return mensaje;
    }

    public BeanCalificaciones leerCalificacionIntegral(String idEmpleado, String periodo, String version) throws Exception{
        BeanCalificaciones beanCalificaciones = new BeanCalificaciones();
        ConexionSAP conSAP = ConexionSAP.getConexionSAP();
        try{
            conSAP.RegistrarRFC("ZHR_RFC_MOSNIVEL_ED");
            conSAP.IngresarDatosInput(idEmpleado, "ID_EMPLEADO");
            conSAP.IngresarDatosInput(periodo, "PERIODO");
            conSAP.IngresarDatosInput(version, "ID_VERSION");
            conSAP.EjecutarRFC();

            beanCalificaciones.setNivelEO(conSAP.rFC.getExportParameterList().getString("NIVEL_EO"));
            beanCalificaciones.setNivelEC(conSAP.rFC.getExportParameterList().getString("NIVEL_EC"));
            beanCalificaciones.setNivelED(conSAP.rFC.getExportParameterList().getString("NIVEL_ED"));
        }
        catch(Exception e){
            e.getMessage();
        }
        return beanCalificaciones;
    }
}